package dibujo;

import java.awt.Graphics;

import java.util.ArrayList;
import java.util.Vector;

import org.uc3m.ed.interfaz_grafica.ventana.VentanaPrincipal;

import panel.PanelArray;




public class DibujoArray{

	/**
	 * 
	 */
	private Vector<NodoDibujoArray> _elementos;
	
	
	/**
	 * 
	 */
	private PanelArray _panelDibujo;
	

	
	/**
	 * 
	 */
	public DibujoArray()
	{
		_elementos=null;
	}
	
	/**
	 * @param panelDibujoPila
	 */
	public DibujoArray(PanelArray panelDibujoPila)
	{
		_elementos=null;
		_panelDibujo=panelDibujoPila;
		
	}

	/**
	 * @param grafico
	 */
	public void dibujar(Graphics grafico,ArrayList<Integer> heap) {
		try {
			
			_elementos=new Vector<NodoDibujoArray>();
			
			
			if (!heap.isEmpty())
			{		
				for(int i= 0;i<heap.size();i++)
				{
					if(heap.get(i)!=null)
						_elementos.add(new NodoDibujoArray(grafico,heap.get(i).toString()));
					else
						_elementos.add(new NodoDibujoArray(grafico,null));
				}	
				configurarNodos();
				
				for(int i= 0;i<_elementos.size();i++)
					_elementos.get(i).crearNodo();
				
			}
			
			
		}catch(Exception e){
			VentanaPrincipal.getConsola().escribirTextoError("CLASS::Heap::DibujoArray ERROR::1\n   Se ha produciodo una Excepcion: "+e.toString());
		}catch(Error e){
			VentanaPrincipal.getConsola().escribirTextoError("CLASS::Heap::DibujoArray ERROR::2\n   Se ha produciodo un Error: "+e.toString());
		}
		
	}

	

	/**
	 * 
	 */
	private void configurarNodos() {
		try{
			int numNodo=1;
			NodoDibujoArray anterior=_elementos.firstElement(),siguiente=null;
			anterior.setPosicionX(40);
			anterior.setPosicionY((_panelDibujo.getHeight()/2)-40);
			anterior.setPosicion(0);
			
			
			
			for(int i=1 ;i<_elementos.size();i++)
			{
				siguiente=_elementos.get(i);
				siguiente.setPosicionX(anterior.getPosicionX()+anterior.getAnchoNodo());
				siguiente.setPosicionY(anterior.getPosicionY());
				siguiente.setPosicion(numNodo++);
				anterior=siguiente;
				
				if ((anterior.getPosicionX()+anterior.getAltoNodo()+100)>_panelDibujo.getWidth())
					_panelDibujo.setSize(_panelDibujo.getWidth()+anterior.getAnchoNodo(), _panelDibujo.getHeight());
			}
			
		}catch(Exception e){
			VentanaPrincipal.getConsola().escribirTextoError("CLASS::Heap::DibujoArray ERROR::3\n   Se ha produciodo una Excepcion: "+e.toString());
		}catch(Error e){
			VentanaPrincipal.getConsola().escribirTextoError("CLASS::Heap::DibujoArray ERROR::4\n   Se ha produciodo un Error: "+e.toString());
		}
	}

}